MLC self-RAID flash data protection scheme

ABSTRACT

A two-dimensional self-RAID method of protecting page-based storage data in a MLC multiple-level-cell flash memory device. The protection scheme includes reserving one parity sector across each data page, reserving one parity page as the column parity, selecting a specific number of pages to form a parity group, writing into the parity page a group parity value for data stored in the pages of the parity group. The parity sector represents applying a RAID technique in a first dimension. The group parity represents applying a RAID technique in a second dimension. Data protection is achieved because a corrupted data sector can likely be recovered by the two dimensional RAID data.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional of U.S. application Ser. No.12/726,200, filed Mar. 17, 2010, now U.S. Pat. No. 8,365,041, which isincorporated by reference herein its entirety.

This application is related to the following co-pending patentapplications: (1) U.S. patent application Ser. No. 13/535,243, filedJun. 27, 2012; and (2) U.S. patent application Ser. No. 13/535,250,filed Jun. 27, 2012, which are incorporated by reference herein theirentirety.

This application also relates to subject matter in the followingco-pending patent applications: U.S. patent application Ser. No.12/082,202, filed on Apr. 8, 2008, entitled “System and Method forPerforming Host Initiated Mass Storage Commands Using a Hierarchy ofData Structures”; U.S. patent application Ser. No. 12/082,205, filed onApr. 8, 2008, entitled “Flash Memory Controller Having Reduced Pinout”;U.S. patent application Ser. No. 12/082,221, filed on Apr. 8, 2008,entitled “Multiprocessor Storage Controller”; U.S. patent applicationSer. No. 12/082,207, filed on Apr. 8, 2008, entitled “Storage Controllerfor Flash Memory Including a Crossbar Switch Connecting a Plurality ofProcessors with a Plurality of Internal Memories”; U.S. patentapplication Ser. No. 12/082,220, filed on Apr. 8, 2008, entitled “FlashMemory Controller and System Including Data Pipelines IncorporatingMultiple Buffers”; U.S. patent application Ser. No. 12/082,206, filed onApr. 8, 2008, entitled “Mass Storage Controller Volatile MemoryContaining Metadata Related to Flash Memory Storage”; U.S. patentapplication Ser. No. 12/082,204, filed on Apr. 8, 2008, entitled “PatrolFunction Used in Flash Storage Controller to Detect Data Errors”; U.S.patent application Ser. No. 12/082,223, filed on Apr. 8, 2008, entitled“Flash Storage Controller Execute Loop”; U.S. patent application Ser.No. 12/082,222, filed on Apr. 8, 2008, entitled “Metadata Rebuild in aFlash Memory Controller Following a Loss of Power”, and U.S. patentapplication Ser. No. 12/082,203, filed on Apr. 8, 2008, entitled “FlashMemory Controller Garbage Collection Operations Performed Independentlyin Multiple Flash Memory Groups,” which are incorporated by referenceherein their entirety.

FIELD OF THE INVENTION

The invention described herein relates to data storage management insemiconductor flash memories, and in particular to a data storageprotection method that prevents data corruption in multiple level cell(MLC) memory devices in the event of a power interruption.

BACKGROUND OF THE INVENTION

Current enterprise-level mass storage relies on hard drives that aretypically characterized by a 3.5″ form factor, a 15,000 rpm spindlemotor and a storage capacity between 73 GB and 450 GB. The mechanicaldesign follows the traditional hard drive with a single actuator and 8read/write heads moving across 8 surfaces. The constraints of thehead/media technology limit the read/write capabilities to using onlyone active head at a time. All data requests that are sent to the driveare handled in a serial manner, with long delays between operations, asthe actuator moves the read/write head to the required position and themedia rotates to place the data under the read/write head.

A solid state memory device is attractive in an enterprise mass-storageenvironment. For that environment, the flash memory is a good candidateamong various solid state memory devices, since it does not have themechanical delays associated with hard drives, thereby allowing higherperformance and commensurately lower cost, and better usage of power andspace.

The flash memory is a form of non-volatile memory, i.e., EEPROM(electronically erasable programmable read-only memory). A memory cellin a flash memory array generally includes a transistor having a controlgate and drain and source diffusion regions formed in a substrate. Thetransistor has a floating gate under the control gate, thus forming anelectron storage device. A channel region lies under the floating gate,isolated by an insulation layer (e.g., a tunnel oxide layer) between thechannel and the floating gate. The energy barrier imposed by theinsulating layer against charge carriers movement into or out of thefloating gate can be overcome by applying a sufficiently high electricfield across the insulating layer. The charge stored in the floatinggate determines the threshold voltage (Vt) of the cell, which representsthe stored data of the cell. Charge stored in the floating gate causesthe cell to have a higher Vt. To change the Vt of a cell to a higher orlower value, the charge stored in the floating gate is increased ordecreased by applying appropriate voltages at the control gate, thedrain and source diffusion regions, and the channel region. Theappropriate voltages cause charge to move between one or more of theseregions and through the insulation layer to the floating gate.

A single-level cell (SLC) flash memory device has a single thresholdvoltage Vt and can store one bit of data per cell. A memory cell in amultiple-level cell (MLC) flash memory device has multiple thresholdvoltages, and depending on the amount of charge stored in the floatinggate, can represent more than one bit of data. Because a MLC flashmemory device enables the storage of multiple data bits per cell, highdensity mass storage applications (such as 512 Mb and beyond) arereadily achievable. In a typical four-level two-bit MLC flash memorydevice, the cell threshold voltage Vt can be set at any of four levelsto represent data “00”, “01”, “10”, and “11”. To program the memory cellto a given level, the cell may be programmed multiple times. Before eachwrite, a flash memory array is erased to reset every cell in the arrayto a default state. As a result, multiple data bits that share the samecell and their electronic states, (hence their threshold voltage Vt's),are interdependent to a point that an unexpected power interruption cangenerate unpredictable consequences. Variations in the electronic statesof the memory cells also generate variations within ranges of thresholdvoltages in a real system. Table 1 below shows the electronic states andthe threshold voltage ranges in a two-bit MLC.

TABLE 1 Threshold voltages and bit values in a two-bit MLC memory cellVt Bit 1 Bit 2 −4.25 V to −1.75 V 1 1 −1.75 V to 0.75 V  1 0 0.75 V to3.25 V 0 1 3.25 V to 5.75 V 0 0

In spite of the advantages of MLC over SLC, MLC flash memory deviceshave not traditionally been used because of certain technicalconstraints, among which data corruption presents one of the most severechallenges.

All flash memories have a finite number of erase-write cycles. MLC flashmemory devices are more vulnerable to data corruption than SLC flashmemory devices. The specified erase cycle limit for each flash memorypage is typically in the order of 100,000 cycles for SLC flash memorydevices and typically in the order of 10,000 cycles for MLC devices. Thelower cycle limit in the MLC flash memory devices poses particularproblems for data centers that operate with unpredictable data streams.The unpredictable data streams may cause “hot spots”, resulting incertain highly-used areas of memory being subject to a large number oferase cycles.

In addition, various factors in normal operation can also affect flashmemory integrity, including read disturbs or program disturbs. Thesedisturbs lead to unpredictable loss of data bits in a memory cell, as aresult of the reading or writing of memory cells adjacent to thedisturbed cell. Sudden data losses in MLC flash memory devices due tounexpected power interruptions require frequent data recoveries. Becausesome data levels require more than one write operations to achieve andbecause more than one bit of data share the same memory cell, a powerchange or a program error during a write data operation leaves the datain a wrong state. When the power returns, the memory cell can be in anerratic state. Therefore a power interruption is a major risk to theintegrity of data stored in MLC flash memory devices.

Flash media typically are written in units called “pages”; each pagetypically includes between 2000 bytes and 8000 bytes. Flash mediatypically are erased in units called “blocks”. Each block typicallyincludes between 16 and 64 pages. Pages in MLC flash memory devices arecoupled into paired pages. The number of paired pages maybe two for the2-bit MLC and may go up to 3 to 4 or higher for higher bit MLCs. Thepaired pages may reside in shared MLC flash memory cells. If the powerfailure occurs while the MLC is in the middle of an operation thatchanges the contents of the flash media (e.g., in the middle of writinga page of data or in the middle of erasing a block of data), theelectrical states of the interrupted page or block are unpredictableafter the device is powered up again. The electrical states can even berandom, because some of the affected bits may already be in the statesassigned to them by the operation, at the time power is interrupted.However, other bits may be lagging behind and have not yet reached theirtarget values yet. Furthermore, some bits might be caught inintermediate states and thus be in an unreliable mode, so that readingthese bits returns different results under different read operations.Therefore power losses while programming a certain page can corrupt apaired page.

In the prior arts, error correction codes (ECC) and Redundant Array ofInexpensive Disk (RAID) techniques have been used to mitigate datacorruption. In one instance, data corruption is prevented by writingparity pages at a different page address. Those techniques requireeither additional memory or complicated error-searching and datarebuilding procedures after power returns. Such requirements orsolutions make the process costly to implement and place significantstrain on the processing power of a conventional flash memorycontroller, which generally includes only a single processor.Furthermore, if a power failure occurs during the writing of a page, thepaired page data can become corrupt in a MLC flash memory device.Therefore even the conventional paired page technique is susceptible toa sudden power interruption. As a matter of fact, the severity of thepossible corruption is high; in some cases, every 10^(th) data bit canbe lost. Relying on conventional ECC techniques to make a MLC flashmemory system reliable would be impractical to implement.

NAND flash memory data corruption can also result from program erasecycle wear outs. Electrons are injected and removed by tunneling throughthin film oxide insulators. Repeated program/erase cycles damage theoxide and reduce its effectiveness. As device dimensions (e.g., oxidefilm thickness) shrink, data integrity problems from device wearing outcan become more severe. One factor that influences this wearing outprocess is the speed at which the program and erase cycles areperformed. However, if the speed of programming and erasing is slowed toavoid wearing out, overall performance can be impacted significantly.

Currently, a technique exists which applies a lower sense voltage tomeasure the charge states of the flash memory, in order to extend thelifetime of the memory device. A flash memory device is a charge-trapdevice that uses sense circuits to detect if a cell contains a givencharge level. However, as the device wears out, its ability to store acharge is compromised. A worn out memory device allows the stored chargeon the floating gate to leak. Consequently a sense circuit will detect areduced voltage from the device. One current recovery mechanism reducesthe sense voltage that is used to determine the logic value a cellcontains. However, a lower sense voltage also returns a lower detectedvoltage, thus resulting in an incorrect charge tracking.

SUMMARY OF THE INVENTION

The present invention provides a two-dimensional self-RAID method ofprotecting, following a power loss, page-based storage data in amultiple-level-cell flash memory device. The process includes reservinga parity sector in each data page under an application of RAID (“Firstdimensional RAID”) technique, thereby forming a parity group containinga predetermined number of pages, and repeating the parity grouping forevery subsequent data pages under a second application of a RAIDtechnique (“Second dimensional RAID”). Thus if a subsequent writecorrupts a paired page, the lost data can be recovered using the twodimensional RAID data.

The first dimensional parity in the present invention is associated witha data page. One sector within the page is reserved for the firstdimensional RAID data. This parity sector allows the recovery of anysingle sector within the ECC capability of that sector. This level ofRAID data can be calculated from the available data at the time thecontroller transfers the data to a chip buffer.

The second dimensional parity in the present invention is calculatedacross a column of sectors in a predetermined number of pages. When thespecific page number is selected carefully, paired page faults can berecovered.

Full data protection against power interruption is achieved because anycorrupted data sector can be recovered by the RAID data either from thewithin page sector parity or from the crossed sector page parity.

The present invention provides a method of preserving page-based flashmemory integrity during writing, in the event of a power loss. Thepresent invention can be used to manage a flash memory having multiplelevel cells (MLC).

According to an embodiment of the present invention, a method isprovided to protect a MLC flash memory data which includes numerousmemory pages. A method of managing a multiple level cell flash memorythat includes a plurality of pages, each page including a plurality ofsequentially numbered sectors, the method comprising: (a) choosing asector in each page as a parity sector; (b) writing data into each pageand calculating a parity value of the sectors in each page and storingthe parity value in the reserved parity sectors; (c) dividing data pagesinto a plurality of groups, wherein each group, except the first groupand the last group, consists of a first predetermined number of pages;(d) reserving a page in each group as a group parity page and writingdata into each page of the group, calculating a parity value of thegroup and storing the parity value in the reserved group parity page;(e) repeating (a) to (d) for each group; (f) reserving a new page tostore a column parity of all sectors sharing the same sector number.

According to another embodiment of the present invention, a method isprovided to protect a MLC flash memory data which includes numerousmemory pages. A method of managing a multiple level cell flash memorythat includes a plurality of pages, each page including a plurality ofsequentially numbered sectors, the method comprising: (a) reserving aparity block; (b) choosing a sector in each page as a parity sector; (c)writing data into each page and calculating a parity value of thesectors in each page and storing the parity value in the chosen paritysector; (d) dividing data pages into a plurality of groups, wherein eachgroup, except the last group, consists of a second predetermined numberof pages; (e) writing data into pages in a subset of a group andcalculating the subset group parity; (f) storing the subset group parityvalue in the reserved parity block; (g) writing data into the remainingpages of the group; (h) repeating (b) to (g); (i) reserving a new pageto store a column parity of sectors sharing the same sector number butresiding in different pages.

According to the present invention, a data storage system is provided inwhich the above methods can be operated upon.

According to the present invention, a method for reducing datacorruption from device wearing out is provided by extending theprogramming and erasing time on selected weak cells. Weak cells areidentified by the rate they generate errors, and then the blocks andpages associated with the weak cells can be programmed and erased at aslower rate than other cells. By tracking the weaker blocks and treatingthem differently than other more robust blocks, endurance can beenhanced. Because the slower programming and erasure processes are onlyperformed on the relatively few weak blocks, overall performance is notsignificantly compromised. A method of managing a multiple level cellflash memory with numerous pages, the method comprising: (a) programmingand erasing data on a page at a predetermined speed; (b) detecting anerror rate for each of the pages and identifying the pages associatedwith error rates that exceed a predetermined value; (c) programming anderasing the identified high error page set a speed that is slower thanthe predetermined speed.

According to another embodiment of the present invention, a method forovercoming the leakage induced charge level shifts is provided. A methodof managing a multiple level cell flash memory that includes a sensecircuitry, the method comprising: (a) selecting a sense voltage; (b)detecting charge levels of memory cells in the multiple level cell flashmemory with the selected sense voltage, and making a first table thatcorrelates the predetermined sense voltage and the sensed charge levels;(c) reducing the sense voltage and detecting charge levels of memorycells in the multiple level cell flash memory using the reduced sensevoltage and making a second table that correlates the reduced sensedvoltage with the sensed charge levels; (d) replacing the first tablewith the second table.

The present invention is better understood upon consideration of thedetailed description below in conjunction with the accompanyingdrawings.

DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a schematic block diagram of a device controller using aflash medium for non-volatile data storage.

FIG. 2 is a cross sectional view of a flash memory device.

FIG. 3 shows a cross sectional view of a multi-level flash memory celland its equivalent circuit diagram.

FIG. 4 shows a two bit-MLC threshold voltage ranges in a MLC flashmemory device.

FIG. 5 is a flash memory paired page diagram.

FIG. 6 illustrates the concept of column parity without group parity.

FIG. 7 illustrates the concept of sector parity or row parity.

FIG. 8 shows group parity with 8 pages in each parity sector group.

FIG. 9 is a table that summarizes the 2-dimensional RAID group parityscheme showing a flash memory data set of 63 pages (rows) and 31 sectors(columns).

FIG. 10 shows 8-page group parity configuration in accordance with anembodiment of the present invention.

FIG. 11 shows 8-page group parity configuration using a set aside parityblock in accordance with another embodiment of the present invention.

FIG. 12 shows a protection scheme using a two-dimensional RAID technique(example 1).

FIG. 13 shows a protection scheme using a two-dimensional RAID technique(example 2).

FIG. 14 is a flow chart of an algorithm which protects a MLC flashmemory device against corruption resulting from a power interruptionduring a write operation.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 is a high level schematic block diagram of a conventional NANDflash media device in a non-volatile data storage unit.

FIG. 2 shows a cross sectional view of a conventional flash memorydevice.

An example of a conventional multiple level (MLC) flash memory cell isillustrated in FIG. 3, where a split channel device has two differentthreshold voltages, Vt1 and Vt2. The referenced cross sectional view andequivalent circuit are taken from U.S. Pat. No. 5,045,940 (Harari).

Variations of the electronic states generate ranges of thresholdvoltages in a real MLC system. FIG. 4 depicts the threshold voltagespans in a conventional two-bit MLC device.

Pages of data sharing the same multiple level cells are called “sharedpages”. Each manufacturer may use a different distance between itsshared pages. Many memory vendors prefer to set the distance at four.For example, at a pair distance of 4, page 0 is paired with page 4, page1 is paired with page 5, page 2 is paired with page 6, and page 3 ispaired with page 7. FIG. 5 shows the paired pages concept at the pairdistance of 4.

The paired pages may share the same memory cells in a MLC flash memorysystem (e.g., in a 2-bit MLC flash memory, bit 0 and bit 1 of a memorycell are bits from the first and second pages of the paired pages,respectively). When a program operation is abnormally aborted, forexample, during a power down or a reset, not only is the page data thatis being programmed damaged, the data in the paired page may also bedamaged, even though it may have been written correctly at a previoustime.

According to one embodiment of the present invention, RAID techniquesare applied in a method along two dimensions. In the first dimension,“the first dimensional RAID”), the method preserves parity informationon the same page. The first dimensional RAID uses row parity or thesector parity, which is calculated using data from the first sector tothe last sector in the same page. As shown in FIG. 7, there are 31sectors of data in each page, respectively labeled Sec 00 to Sec 30. Asingle sector within each page is reserved for storing the firstdimensional RAID data (i.e., the row or sector parity). In FIG. 7, p0sector is the parity sector for Page 0, and sector pX is the paritysector for Page X. One common error correction code (ECC) allowssingle-bit error correction. With an extra parity bit, double-bit errorscan be detected. Therefore the parity data in the parity sector allowsrecovery of any sector in a page within the ECC capability of thesector, in the event of a power interruption. Sector parity may becalculated from all the data in the page at the time the data is movedfrom the controller to a chip buffer.

In the second dimension (“the second dimensional RAID”), the methodpreserves parity data calculated over a number of pages in a paritygroup. Such parity data is referred to as group parity. The number ofpages in each parity group is variable. In one implementation, forexample, the number of pages in a parity group is 8 pages.

Group parity that is calculated for corresponding sectors over all pagesin a block is referred to column parity. FIG. 6 illustrates columnparity in a 64 page data set. In FIG. 6, each column parity value iscalculated over the same sectors, for example, Sec X, from all thepages. The parity value is calculated and written in a parity pagedesignated for the block, with a column parity calculated for the samesector in all the pages of the block.

Group parity in the second dimensional RAID provides additional parityprotection in a flash memory device. A group parity for a parity groupthat includes less than all pages of a block sets a higher level ofprotection than column parity which is illustrated in FIG. 6. As a firststep, the number of pages in the parity group is selected as the groupsize. This number is chosen carefully in order to provide adequateprotection from paired page faults and is often selected by the MLCflash memory manufacturer. For the pairing chosen, a typical group sizeis 8. FIG. 8 shows group parity with 8 pages in each parity sectorgroup. In FIG. 8, pages p3, p11, p59 are parity pages.

FIG. 10 illustrates a parity grouping configuration applicable to theconfiguration shown in FIG. 8, according to one embodiment of thepresent invention. As shown in FIG. 10, the first group (i.e., Group 1)is a half group. In each subsequent group of 8 pages, the first 4 pagesare paired with the 4 pages in the previous group. For instance, if thepage pairing sequence at the multiple level cells is 0-4, 1-5, 2-6 and3-7 (i.e., page 0 is paired to page 4, page 1 is paired to page 5, page2 is paired to page 6, and page 3 is paired to page 7), then for eachwrite of any of pages 0, 1, 2, a corresponding 2-dimensional RAID groupparity write can be performed on group parity page 3. In the event thata subsequent write of a page in any of pages 4 to 6 corrupts thecorresponding paired page 0, 1, or 2 the data loss may be recoveredusing the RAID data from the previously written group parity page 3.Thus the group parity page protects page 0-2 in parity group 1 of 4pages. The group 2 parity page is page 11, protecting page 8, 9, 10 fromdamages caused by power interruption during writing pages 12 to 14. FIG.9 is a table that summarizes the 2-dimensional RAID group parity schemeshowing a flash memory data set of 63 pages (rows) and 31 sectors(columns). As shown in FIG. 9, Page 3, Page 11 . . . and Page 59 aresuch selected to be the group parity pages for 8-page groups. First halfof each group is paired, or co-resided with the second half of theprevious group, on the same MLC flash memory device.

FIG. 11 illustrates a parity grouping configuration in anther embodimentof the present invention. In FIG. 11, all groups contain 8 pages. Thepage pairing sequence at the multiple level cells is 0-4, 1-5, 2-6 and3-7 (i.e. page 0 is paired to page 4, page 1 is paired to page 5, page 2is paired to page 6, and page 3 is paired to page 7). The group parityfor pages 0-3 is written to a set-aside parity page in parity blockoutside the data pages. If there is power interruption during asubsequent writing of any of pages 4-7, the parity page in the set-asideparity block may be used to recover the damaged data in pages 0-3. Ifpages 4-7 are written successfully, the parity page for pages 0-3 in theparity block outside the data pages can be saved for future reference,and also can be erased if desirable. This process is repeated for every8 pages.

Another advantage of this type of RAID protection is that it does notrequire reads to generate the parity data on writes. All that isrequired is a parity cache for the pages being written. This simplifiesthe algorithm required for parity generation and does not cause a writeperformance penalty. The only time performance is affected is during therebuild of data in the event that a hard error is encountered.

Although in the detailed description of the current invention, anexemplary number of 8 are used as the number of pages in a group, theinvention does not limit the number of pages in a group to 8.

To implement the scheme shown in FIG. 11, in the first dimension, eachof the 64 pages is provided with a parity sector (located, for example,in the second sector of each page). The parity sector in each pageprovides the first dimensional RAID. In the second dimension, there aretwo levels of parity protection. First, there is column parity for allpages. In the column parity page, each sector stores the column paritycalculated based on all the corresponding sectors of all the pages.Second, group parity is also recorded according for pages groupedaccording to a selected group size. The group parity may be written toset-aside parity blocks. Alternatively, the group parity may use the4^(th), 11^(th), 19^(th) . . . 59^(th) pages to store group parity pagesalong with the data pages. In one embodiment using set-aside parityblocks, after the second half group of the paired pages are writtenwithout any power interruptions, the set-aside parity block written forthe first half of the paired pages may be erased or may be saved forfuture reference.

FIG. 12 illustrates how the two dimensional RAID protection works when anumber of uncorrectable sectors occur in one embodiment of the presentinvention (the corrupted sectors are represented in FIG. 12 by denselylined blocks). For example, Sec 00 in Page 4 and Sec 02 in Page 5 aresingle errors in the respective pages; therefore, the data loss in thecorresponding sector can be recovered from the parity sector on each ofthose pages respectively. However, as Page 7 is corrupted in twosectors, the corruption in Sec 00 in Page 7 can be recovered from thegroup parity page 11. Similarly, the corruption in Sec 02 in Page 9 canalso be recovered from the group parity page 11. Subsequent to the abovecorrections, both Sec 30 in Page 7 and Sec 30 in Page 9 can be recoveredfrom the parity sectors p7 and p9 respectively, since the other sectorsin those pages have been recovered. Thus it is possible to recover dataeven though there are two bad sectors in one page or in one column.

In a more severe power interruption scenario when a number of pairedpages are affected in a single page or in a single column, the groupsector parity is able to recover corrupted data by combining the rowparity, column parity and group parity. One example of the recoveryscheme is illustrated in FIG. 13, where multiple hard errors exist (theerror sectors are represented with dense-lined blocks). Sec 00 in Page0, Sec 02 in Page 1 and Sec 02 in Page 5 are single errors in thecorresponding pages; therefore, they can be recovered from the paritysectors in those pages respectively. Sec 29 in Page 9 can be recoveredfrom the group parity in Sec 29 of Page 11. After these corrections aremade, Sec 00 in Page 3 can be recovered by recalculating group parity ofSec 00 over pages 0-2, and Sec 02 in Page 9 can be recovered from thegroup parity of Sec 02 in Page 11. Subsequent to those corrections, Sec00 in Page 7 is correctable from the group parity page 11, Sec 02 inPage 13, and Sec 29 in Page 13 can be recovered from the group paritypage 19. Following the above corrections, Sec 30 in Page 3, Sec 30 inPage 7, Sec 30 in Page 9 and Sec 30 in Page 13 can be recovered from thecorresponding parity sectors since the other bad sectors in relevantpages have been recovered. Thus it is possible to recover data eventhough there are four sectors with hard errors residing in one column.

In one embodiment of the present invention where a set aside parityblock outside the data pages is used to reserve the group parity, analgorithm can be written for the process of data writing, when data isprotected against the write-corrupt at a power interruption. Thisalgorithm comprises the following steps for a parity group of 8 pages:

-   -   a) Write 4 pages from pages 0 to page 3 and calculate the group        parity for pages 0-3;    -   b) Write the group parity page to a Parity-Block outside the        data memory;    -   c) Write pages 4-7;    -   d) Release the Parity-Block of pages 0-3, used Parity-Block can        be saved or erased;    -   e) Repeat the process a) to d) for every subsequent group of 8        pages;    -   f) Treat the last group the same way even if the last group has        less than 8 pages.        This algorithm is also illustrated in FIG. 14.

The foregoing description is intended to illustrate, but not to limit,the scope of the invention, which is defined by the scope of theappended claims. Other embodiments are within the scope of thisdisclosure.

What is claimed is:
 1. A method of managing a multiple level cell flashmemory that is organized logically into one or more blocks each having aplurality of pages, each page including a plurality of sectors, themethod comprising: identifying a parity block; choosing a parity sectorin each page of a respective block; assigning the pages of therespective block into a plurality of groups; for each page of therespective block, calculating a sector parity value for data stored inthe sectors in the page and storing the sector parity value in theparity sector of the page; prior to completing data writing into allpages of a group in the respective block, calculating a subset groupparity for a subset of pages in the group, the subset of pagescomprising a plurality of pages in the group in the respective block;and storing the subset group parity in the parity block.
 2. The methodas in claim 1, wherein the group in the respective block comprises afirst group, and the subset of pages in the first group is a firstsubset of pages in the group; and the method further comprising:repeating said calculating and storing for a second subset of pages in asecond group distinct from the first group.
 3. The method as in claim 1,wherein the sectors of each page are each assigned a sector number, themethod further comprising: selecting a column parity page andcalculating, for each sector number, a column parity for all sectorsassigned the sector number in the pages of the respective block.
 4. Themethod as in claim 1, wherein each group consists of 8 pages.
 5. Themethod as in claim 1, wherein each multiple level cell of a plurality ofmultiple level cells in the multiple level cell flash memory is sharedby two pages of the same group.
 6. The method as in claim 1, wherein theparity block resides outside the flash memory.
 7. The method as in claim1, wherein the parity block resides on a non-volatile memory.
 8. Themethod as in claim 1, wherein the subset group parity, for the subset ofpages in the respective group, is erased after data is completelywritten into the pages of the respective group.
 9. The method as inclaim 1, wherein the subset group parity, for the subset of pages in therespective group, is saved after data is completely written into thepages of the respective group.
 10. The method as in claim 1, wherein thesubset group parity, for the subset of pages in the respective group, iscalculated from data in half of the pages of the respective group.
 11. Aflash memory data storage system operable in accordance with the methodof claim
 1. 12. A multiple level cell flash memory data storage device,comprising: a flash memory array having a plurality of blocks, eachblock in the plurality of blocks having a plurality of pages, arespective block including a plurality of groups of pages; each page ofthe respective block having a plurality of sectors, including anassigned parity sector; wherein the device is operable, for a respectivepage, to store data in data sectors of the respective page; to store, inthe assigned parity sector of the respective page, a sector parity valueof the data stored in the data sectors of the respective page; andwherein the device is operable, for a respective group of pages in therespective block, to store data in data pages of the respective group ofpages; and to store, in a parity block, a subset group parity valuecalculated for a subset of pages in the respective group prior tocompleting data writing into all pages of the respective group.
 13. Themultiple level cell flash memory data storage device of claim 12,wherein the device is operable to calculate and store in the parityblock subset group parity values for multiple subsets of pages, eachsubset of pages in a distinct respective group.
 14. The multiple levelcell flash memory data storage device of claim 12, wherein the sectorsof each page are each assigned a sector number, and the device isoperable, for the respective group of pages, to select a column paritypage for the respective block and to calculate, for each sector number,a column parity for all sectors assigned the sector number in the pagesof the respective block.
 15. The multiple level cell flash memory datastorage device of claim 12, wherein each group consists of 8 pages. 16.The multiple level cell flash memory data storage device of claim 12,wherein the parity block resides outside the flash memory.
 17. Themultiple level cell flash memory data storage device of claim 12,wherein the parity block resides on a non-volatile memory.
 18. Themultiple level cell flash memory data storage device of claim 12,wherein the subset group parity, for the subset of pages in therespective group, is erased after data is completely written into thepages of the respective group.
 19. The multiple level cell flash memorydata storage device of claim 12, wherein the subset group parity, forthe subset of pages in the respective group, is saved after data iscompletely written into the pages of the respective group.
 20. Themultiple level cell flash memory data storage device of claim 12,wherein the subset group parity, for the subset of pages in therespective group, is calculated from data in half of the pages of therespective group.
 21. The multiple level cell flash memory data storagedevice of claim 12, wherein each multiple level cell of a plurality ofmultiple level cells in the multiple level cell flash memory is sharedby two pages of the same group.
 22. The multiple level cell flash memorydata storage device of claim 12, wherein each multiple level cell of aplurality of multiple level cells in the multiple level cell flashmemory is shared by two pages assigned to different groups.
 23. Themultiple level cell flash memory data storage device of claim 22,wherein the groups are each assigned a group number and wherein thepages sharing the respective multiple level cell are assignedconsecutive group numbers.
 24. The multiple level cell flash memory datastorage device of claim 23, wherein one or more of the groups areassigned half the number of pages as assigned to each of the remainderof the groups of the respective block.
 25. A method of managing amultiple level cell flash memory that is organized logically into one ormore blocks each having a plurality of pages, each page including aplurality of sectors, the method comprising: choosing a parity sector ineach page of a respective block; assigning the pages of the respectiveblock into a plurality of groups, each group in the respective blockincluding an assigned parity page; for each page of the respectiveblock, calculating a sector parity value for data stored in the sectorsin the page and storing the sector parity value in the parity sector ofthe page; calculating a group parity value for data stored in the pagesof the group; and storing the group parity value in the assigned paritypage.
 26. A multiple level cell flash memory data storage device,comprising: a flash memory array having a plurality of blocks, eachblock in the plurality of blocks having a plurality of pages, arespective block including a plurality of groups of pages, each group ofpages in the respective block including an assigned parity page; eachpage of the respective block having a plurality of sectors, including anassigned parity sector; wherein the device is operable, for a respectivepage, to store data in data sectors of the respective page; to store, inthe assigned parity sector of the respective page, a sector parity valueof the data stored in the data sectors of the respective page; andwherein the device is operable, for a respective group of pages in therespective block, to store data in data pages of the respective group ofpages; and to store, in the parity page of the respective group, a groupparity value of the data stored in the data pages of the respectivegroup.